home *** CD-ROM | disk | FTP | other *** search
- /* write access to registers 40/42 */
- /* register 42: */
- #define HCBP 128
- #define MRESET 64
- #define SEL_ST506 0
- #define SEL_SCSI 32
- #define INT_ENABLE 16
-
- /* read access to registers 40/42 */
- /* register 40: */
- #define INT_FOLLOW 128
- #define INT2_PENDING 16
- /* register 42: */
- #define CCBP 128
-
- #define A2090_CNTL_LO 0x40
- #define A2090_CNTL_HI 0x42
- #ifdef A2090
- #define SCSI_CS_CNTL 0x60
- #define SCSI_CS_DATA 0x62
- #endif
- #ifdef A2091
- #define SCSI_CS_CNTL 0x91
- #define SCSI_CS_DATA 0x93
- #endif
- #ifdef A3000
- #define SCSI_CS_CNTL 0x41
- #define SCSI_CS_DATA 0x43
- #endif
- #ifdef A2090
- /* not used but on the 2090 */
- #define SCSI_PCSS 0x64
- #define SCSI_PCSD 0x68
- #endif
-
- #ifdef A2090
- /* the maximum memory block the 2090 DMA circuit can fill with one
- * operation.
- */
- #define DMA_MAX_TRANSFER 64*1024
- #endif
- #ifdef A2091
- /* seems there is no such limit... GREAT! */
- #define DMA_MAX_TRANSFER (ulong)~0
- #endif
-
-
- #ifdef A2090
- /* DMA states */
- #define DMA_LD_UP_ADDR 0xfb
- #define DMA_LD_MID_ADDR 0xfd
- #define DMA_LD_LO_ADDR 0xf6 /* loads low latch and starts dma */
- #define DMA_OPEN_FIFO 0xf7
- #define DMA_READ_STATUS 0xef
- #define DMA_RESET_1 0x7f
- #define DMA_RESET_2 0xff
- #endif
-
- /* wd register names */
- #define WD_OWN_ID 0x00
- #define WD_CONTROL 0x01
- #define WD_TIMEOUT_PERIOD 0x02
- #define WD_CDB_1 0x03
- #define WD_CDB_2 0x04
- #define WD_CDB_3 0x05
- #define WD_CDB_4 0x06
- #define WD_CDB_5 0x07
- #define WD_CDB_6 0x08
- #define WD_CDB_7 0x09
- #define WD_CDB_8 0x0a
- #define WD_CDB_9 0x0b
- #define WD_CDB_10 0x0c
- #define WD_CDB_11 0x0d
- #define WD_CDB_12 0x0e
- #define WD_TARGET_LUN 0x0f
- #define WD_COMMAND_PHASE 0x10
- #define WD_SYNCHRONOUS_TRANSFER 0x11
- #define WD_TRANSFER_COUNT_MSB 0x12
- #define WD_TRANSFER_COUNT 0x13
- #define WD_TRANSFER_COUNT_LSB 0x14
- #define WD_DESTINATION_ID 0x15
- #define WD_SOURCE_ID 0x16
- #define WD_SCSI_STATUS 0x17
- #define WD_COMMAND 0x18
- #define WD_DATA 0x19
- #define WD_AUXILIARY_STATUS 0x1f
-
- /* wd commands */
- #define WD_CMD_RESET 0x00
- #define WD_CMD_ABORT 0x01
- #define WD_CMD_ASSERT_ATN 0x02
- #define WD_CMD_NEGATE_ACK 0x03
- #define WD_CMD_DISCONNECT 0x04
- #define WD_CMD_RESELECT 0x05
- #define WD_CMD_SELECT_WITH_ATN 0x06
- #define WD_CMD_SELECT_WITHOUT_ATN 0x07
- #define WD_CMD_SELECT_WITH_ATN_AND_TRANSFER 0x08
- #define WD_CMD_SELECT_WITHOUT_ATN_AND_TRANSFER 0x09
- #define WD_CMD_RESELECT_AND_RECEIVE_DATA 0x0a
- #define WD_CMD_RESELECT_AND_SEND_DATA 0x0b
- #define WD_CMD_WAIT_FOR_SELECT_AND_RECEIVE 0x0c
- #define WD_CMD_TRANSLATE_ADDRESS 0x18
- #define WD_CMD_TRANSFER_INFO 0x20
- #define WD_CMD_TRANSFER_PAD 0x21
- #define WD_CMD_SBT_MODE 0x80
-
- /* values for "direction" */
- #define DIRECTION_READ 1
- #define DIRECTION_WRITE 0
-
- typedef unsigned char ubyte;
- typedef unsigned short ushort;
- typedef unsigned long ulong;
-
- #include <devices/scsidisk.h>
-
- struct scsi_msg {
- struct Message scm_message;
- ubyte scm_unit;
- /*
- * scm_cmd (in): either SCM_CMD_EXEC_SCSI (execute this message's
- * scm_scsi_cmd on unit scm_unit).
- * or SCM_CMD_SHUTDOWN (shutdown handler task).
- * scm_cmd (out):io_Error to be returned, if SCM_CMD_EXEC_SCSI
- */
- ubyte scm_cmd;
- struct SCSICmd *scm_scsi_cmd;
- };
-
- #define SCM_CMD_EXEC_SCSI 1
- #define SCM_CMD_SHUTDOWN 2
-